package com.itheima.io.bufferedinputstream.demo01;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 演示的是: 如何使用BufferedInputStream读取数据
 */
public class BufferedInputStreamDemo01 {

    public static void main(String[] args) throws IOException {

        // 创建BufferedInputStream对象
        /**
         * 创建BufferedInputStream对象，就需要借助于构造方法:
         * public BufferedInputStream​(InputStream in): 该构造方法需要一个InputStream，那么在使用的时候就需要为其传递了一个InputStream的对象
         * 但是InputStream是一个抽象类，不能直接new，因此我们可以为其传递一个子类对象，而子类对象我们学过FileInputStream，因此我们需要创建一个
         * FileInputStream对象，将这个对象作为构造方法参数传递
         */
        // FileInputStream fileInputStream = new FileInputStream("itheima-io-bufferedinputstream\\b.txt") ;
        // BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("itheima-io-bufferedinputstream\\b.txt"));

        // 读取数据
        // 一次读取一个字节
//        int by = -1 ;           // 记录读取到的字节
//        while( (by = bufferedInputStream.read()) != -1 ) {
//            System.out.print((char)by);
//        }

        // 一次读取一个字节数组
        byte[] bytes = new byte[1024] ;
        int len = -1 ;          // 记录读取到的有效的字节个数
        while( (len = bufferedInputStream.read(bytes)) != -1 ) {
            System.out.print(new String(bytes , 0 , len));
        }

        // 释放资源
        bufferedInputStream.close();

    }

}
